home *** CD-ROM | disk | FTP | other *** search
/ Aminet 16 / Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso / Aminet / util / moni / SysLog.lha / SysLog_V1.20 / Developer / include / libraries / syslog.h
C/C++ Source or Header  |  1996-10-27  |  5KB  |  212 lines

  1. #ifndef LIBRARIES_SYSLOG_H
  2. #define LIBRARIES_SYSLOG_H
  3.  
  4. /*
  5. **      $VER: syslog.h 1.20 (20.10.95)
  6. **      SysLog Release 1.20
  7. **
  8. **      syslog.library definitions
  9. **
  10. **      Copyright © 1995-96 Petri Nordlund. All rights reserved.
  11. **
  12. **      $Id: syslog.h 1.11 1996/10/03 13:36:23 petrin Exp petrin $
  13. **
  14. */
  15.  
  16. #ifndef EXEC_TYPES_H
  17. #include "exec/types.h"
  18. #endif /* EXEC_TYPES_H */
  19.  
  20. #ifndef EXEC_PORTS_H
  21. #include "exec/ports.h"
  22. #endif /* EXEC_PORTS_H */
  23.  
  24. #ifndef DEVICES_TIMER_H
  25. #include "devices/timer.h"
  26. #endif /* DEVICES_TIMER_H */
  27.  
  28. #include <stdarg.h>
  29.  
  30.  
  31. #define SYSLOGNAME        "syslog.library"
  32. #define SYSLOGVERSION    1L
  33.  
  34.  
  35. /*
  36.  * Priority and facility form a single 32-bit value. The bottom 3 bits
  37.  * are used for the priority (0-7) and the top 28 bits are used for the
  38.  * facility. Both the priorities and the facilities correspond to ascii
  39.  * strings that are included in this file.
  40.  *
  41.  */
  42.  
  43. /*
  44.  * Priorities
  45.  *
  46.  */
  47. #define    LOG_EMERG    0    /* system is unusable */
  48. #define    LOG_ALERT    1    /* action must be taken immediately */
  49. #define    LOG_CRIT    2    /* critical conditions */
  50. #define    LOG_ERR        3    /* error conditions */
  51. #define    LOG_WARNING    4    /* warning conditions */
  52. #define    LOG_NOTICE    5    /* normal but significant condition */
  53. #define    LOG_INFO    6    /* informational */
  54. #define    LOG_DEBUG    7    /* debug-level messages */
  55.  
  56.  
  57. /*
  58.  * Facilities
  59.  *
  60.  */
  61. #define    LOG_NOFAC        (0<<3)    /* no facility */
  62. #define    LOG_KERN        (1<<3)    /* kernel/system messages */
  63. #define    LOG_USER        (2<<3)    /* random user-level messages */
  64. #define    LOG_MAIL        (3<<3)    /* mail system */
  65. #define    LOG_DAEMON        (4<<3)    /* system daemons/commodities */
  66. #define    LOG_AUTH        (5<<3)    /* security/authorization messages */
  67. #define    LOG_SYSLOG        (6<<3)    /* messages generated internally by SyslogDaemon */
  68. #define    LOG_NEWS        (7<<3)    /* network news subsystem */
  69. #define    LOG_UUCP        (8<<3)    /* UUCP subsystem */
  70. #define    LOG_CRON        (9<<3)    /* cron utility */
  71. #define    LOG_AUTHPRIV    (10<<3)    /* security/authorization messages (private) */
  72. #define    LOG_FTP            (11<<3)    /* ftp daemon */
  73.  
  74. /* other codes through 15 reserved for system use */
  75. #define    LOG_LOCAL0        (16<<3)    /* reserved for local use */
  76. #define    LOG_LOCAL1        (17<<3)    /* reserved for local use */
  77. #define    LOG_LOCAL2        (18<<3)    /* reserved for local use */
  78. #define    LOG_LOCAL3        (19<<3)    /* reserved for local use */
  79. #define    LOG_LOCAL4        (20<<3)    /* reserved for local use */
  80. #define    LOG_LOCAL5        (21<<3)    /* reserved for local use */
  81. #define    LOG_LOCAL6        (22<<3)    /* reserved for local use */
  82. #define    LOG_LOCAL7        (23<<3)    /* reserved for local use */
  83.  
  84.  
  85. /*
  86.  * Macros
  87.  *
  88.  */
  89.  
  90. #define    LOG_PRIMASK    0x07                                /* mask to extract priority part */
  91. #define    LOG_PRI(p) ((p) & LOG_PRIMASK)                    /* Extract priority */
  92. #define    LOG_MAKEPRI(fac, pri) (((fac) << 3) | (pri))    /* Form a single value from facility and priority */
  93. #define    LOG_NFACILITIES    24                                /* current number of facilities */
  94. #define    LOG_FACMASK    0x03f8                                /* mask to extract facility part */
  95. #define    LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)            /* facility of pri */
  96. #define    INTERNAL_NOPRI 0x10                                /* the "no priority" priority */
  97.  
  98.  
  99. /*
  100.  * Symbolic names for priorities and facilities
  101.  *
  102.  */
  103.  
  104. #ifdef SYSLOG_NAMES
  105. struct SysLogName {
  106.     char        *name;
  107.     int            value;
  108. };
  109.  
  110. struct SysLogName priority_names[] = {
  111.     "alert",    LOG_ALERT,
  112.     "crit",        LOG_CRIT,
  113.     "debug",    LOG_DEBUG,
  114.     "emerg",    LOG_EMERG,
  115.     "err",        LOG_ERR,
  116.     "info",        LOG_INFO,
  117.     "none",        INTERNAL_NOPRI,        /* INTERNAL */
  118.     "notice",    LOG_NOTICE,
  119.     "warning",    LOG_WARNING,
  120.     NULL,        -1,
  121. };
  122.  
  123. struct SysLogName facility_names[] = {
  124.     "auth",        LOG_AUTH,
  125.     "authpriv",    LOG_AUTHPRIV,
  126.     "cron",     LOG_CRON,
  127.     "daemon",    LOG_DAEMON,
  128.     "ftp",        LOG_FTP,
  129.     "kern",        LOG_KERN,
  130.     "mail",        LOG_MAIL,
  131.     "mark",     LOG_MAKEPRI(LOG_NFACILITIES,0),        /* INTERNAL */
  132.     "news",        LOG_NEWS,
  133.     "syslog",    LOG_SYSLOG,
  134.     "user",        LOG_USER,
  135.     "uucp",        LOG_UUCP,
  136.     "local0",    LOG_LOCAL0,
  137.     "local1",    LOG_LOCAL1,
  138.     "local2",    LOG_LOCAL2,
  139.     "local3",    LOG_LOCAL3,
  140.     "local4",    LOG_LOCAL4,
  141.     "local5",    LOG_LOCAL5,
  142.     "local6",    LOG_LOCAL6,
  143.     "local7",    LOG_LOCAL7,
  144.     NULL,        -1,
  145. };
  146. #endif
  147.  
  148.  
  149. /*
  150.  * Arguments to setlogmask
  151.  *
  152.  */
  153.  
  154. #define    LOG_MASK(pri)    (1 << (pri))            /* mask for one priority */
  155. #define    LOG_UPTO(pri)    ((1 << ((pri)+1)) - 1)    /* all priorities through pri */
  156.  
  157.  
  158. /*
  159.  * Option flags for OpenLog() and Log().
  160.  */
  161.  
  162. #define    LOG_PID        0x01    /* log the pid with each message */
  163. #define    LOG_CONS    0x02    /* log on the console if errors in sending */
  164. #define    LOG_PERROR    0x04    /* log to stderr as well */
  165.  
  166.  
  167. /*
  168.  * SysLog Spy structure
  169.  *
  170.  */
  171.  
  172. struct SysLogSpy {
  173.     struct MsgPort     *Spy_port;        /* this will be allocated for you by AddSysLogSpy() */
  174. };
  175.  
  176.  
  177. /*
  178.  * Message sent to spies
  179.  *
  180.  */
  181.  
  182. struct SysLogMessage {
  183.     struct Message    ExecMessage;
  184.     LONG            pri;
  185.     char            *msg;            /* A newline character is always included */
  186.     struct timeval    logtime;
  187. };
  188.  
  189.  
  190. /*
  191.  * syslog.lib prototypes
  192.  *
  193.  */
  194.  
  195. void SysLog(LONG priority, STRPTR format, ...);
  196. void VSysLog(LONG priority, STRPTR format, va_list args);
  197. void OpenLog(STRPTR tag, LONG options, LONG facility);
  198. void CloseLog(void);
  199. LONG SetLogMask(LONG mask);
  200.  
  201.  
  202. #ifdef LOWERCASE_SYSLOG_NAMES
  203. #define syslog        SysLog
  204. #define vsyslog        VSysLog
  205. #define openlog     OpenLog
  206. #define closelog    CloseLog
  207. #define setlogmask    SetLogMask
  208. #endif
  209.  
  210.  
  211. #endif /* LIBRARIES_SYSLOG_H */
  212.